Pizzeria PisciBurger
Bienvenido a mi proyecto web de una pizzería.
Sobre el Proyecto
Este proyecto es una plataforma diseñada al 100% en la nube siguiendo un modelo de tres capas de pedidos en línea para la pizzería PisciBurger. Su propósito es facilitar la experiencia de los clientes permitiéndoles realizar pedidos cómodamente desde sus dispositivos, sin necesidad de llamar por teléfono. La interfaz es intuitiva, con una navegación sencilla por categorías de productos, desde Pizzas hasta Postres, permitiendo a los usuarios seleccionar productos, ver detalles, y finalizar la compra.
Logo e Identidad Visual
El logo de PisciBurger es el elemento visual central en la plataforma, creando un reconocimiento instantáneo de la marca. Se ha diseñado la identidad visual para que esté alineada con la imagen de una pizzería moderna, utilizando colores cálidos y atractivos que reflejan el ambiente acogedor y la calidad de los productos ofrecidos.
Tecnologías Utilizadas












Documentación Técnica
Componentes Principales
Diagrama de Arquitectura
Este proyecto es una plataforma 100% en la nube, utilizando tecnología de AWS para garantizar alta disponibilidad, escalabilidad, eficiencia y seguridad en el procesamiento de datos. La arquitectura conecta el frontend, alojado en Amazon S3 y distribuido globalmente mediante Amazon CloudFront, lo que asegura una carga rápida de los contenidos estáticos en la zona cercana a la pizzería, mejorando la experiencia del usuario local. El enrutamiento DNS es gestionado por Amazon Route 53, que dirige el tráfico de forma confiable hacia los recursos de la plataforma.
Las Funciones de AWS Lambda se encargan del procesamiento de pedidos, la autenticación de usuarios y la interacción con la base de datos, la cual se almacena en Amazon RDS. Amazon RDS proporciona una base de datos relacional segura y escalable, que permite a las funciones Lambda acceder y actualizar la información de manera eficiente. Este flujo de arquitectura permite una comunicación optimizada entre la interfaz de usuario y el backend, asegurando que todos los datos y archivos se gestionen de forma segura y sin servidores dedicados.

Esquema de Base de Datos
La base de datos está estructurada en Amazon RDS utilizando MariaDB como motor de base de datos, proporcionando una solución escalable, confiable y segura para almacenar los datos de la plataforma. Se han implementado medidas de seguridad avanzadas para proteger tanto la base de datos como los datos sensibles de los usuarios.
Además, Amazon RDS ofrece una capa adicional de seguridad para MariaDB mediante configuraciones avanzadas de acceso y encriptación de datos en reposo. Estos controles garantizan que los datos de usuario y las contraseñas estén protegidos contra accesos no autorizados, asegurando la privacidad y la integridad de la información en todo momento.

Seguridad y Protección de Datos
La plataforma utiliza una serie de medidas avanzadas para garantizar la seguridad de los datos de los usuarios y proteger la infraestructura.
Costo de Funcionamiento
El proyecto está diseñado para ser rentable y escalable, aprovechando los servicios de AWS con un modelo de pago por uso que minimiza los costos operativos.
Para estimar los costos iniciales, se ha utilizado el AWS Pricing Calculator, y se monitorean los costos actuales con AWS Cost Explorer.
En el futuro, se implementarán otras herramientas como AWS Budgets, AWS Cost Anomaly Detection, AWS Trusted Advisor y AWS Compute Optimizer para mejorar y optimizar el costo en el funcionamiento continuo de la plataforma.
Estimación Mensual: Dependiendo del tráfico y del uso, el costo mensual promedio estimado es de X a Y USD, con capacidad de ajuste según el crecimiento del proyecto.
Presupuesto
Servicio | Descripción | Costo Aproximado (€/mes) |
---|---|---|
Amazon S3 | Almacenamiento y entrega del frontend estático (asumiendo 10 GB de almacenamiento y 100 GB de tráfico de salida) | 5€ - 7€ |
AWS Lambda | Procesamiento de pedidos, autenticación y acceso a la base de datos (estimado en 500,000 solicitudes con ejecución media de 200 ms) | 2€ - 5€ |
Amazon RDS (MariaDB) | Base de datos para almacenamiento de usuarios y pedidos. Considerando una instancia db.t3.micro y 20 GB de almacenamiento | 15€ - 20€ |
Amazon CloudFront | Distribución de contenido en una región cercana para mejorar la latencia (asumiendo 100 GB de tráfico de salida) | 8€ - 10€ |
Amazon Route 53 | Enrutamiento DNS para el dominio, con aproximadamente 1 millón de consultas DNS al mes | 0.50€ |
Monitoreo y Seguridad (AWS CloudWatch, AWS IAM) | Monitoreo básico y configuración de roles de seguridad (CloudWatch Logs y métricas) | 1€ - 3€ |
Costo Total Aproximado: Sumando todos los servicios, el costo mensual promedio estimado es de 31.50€ - 45.50€ €/mes.
Dependiendo del tráfico y del uso, el costo mensual puede ajustarse según el crecimiento del proyecto.
Notas:
Interfaz de Escritorio
Inicio
Interfaz principal del usuario
Login
Interfaz de login de usuario
Menu
Página de eleccion de productos
Pedido Realizado
Página post pedido
Interfaz Responsiva
Inicio
Interfaz principal del usuario
Login
Interfaz de login de usuario/p>
Registro
Página de registro de usuario
Menu
Página de eleccion de productos
Pedido Realizado
Página post pedido
Proceso de Desarrollo
Planificación
El desarrollo del proyecto se planificó en fases para asegurar un flujo de trabajo organizado y efectivo. Estas fases incluyeron:
Cada fase contó con objetivos específicos y plazos definidos, lo cual me permitió una evolución ordenada del proyecto y la capacidad de hacer ajustes según las necesidades del cliente y los resultados de las pruebas.
Metodología
El desarrollo del proyecto siguió una metodología ágil para facilitar la adaptabilidad y la mejora continua en cada fase. Los aspectos clave de esta metodología incluyeron:
Esta metodología me permitió realizar mejoras continuas, responder a cambios y optimizar el desarrollo para obtener un producto final que se ajusta a las expectativas del cliente.
Retos y Soluciones
Este ha sido mi primer proyecto en el mundo del desarrollo mientras que realiza el curso de AWS Re/Sart, lo que implicó afrontar numerosos desafíos, especialmente al no tener experiencia previa en programación. Sin embargo, cada obstáculo fue una oportunidad para aprender y mejorar, y poco a poco logré superar los problemas, obteniendo un producto funcional y confiable. A continuación, comparto algunos de los principales retos y las soluciones que encontré en el camino:
Descripción de Funcionalidades
Autenticación de Usuarios
La autenticación de usuarios es un aspecto crucial para asegurar que solo las personas autorizadas puedan acceder a sus cuentas y realizar pedidos. Este sistema garantiza que los datos personales y los pedidos de los clientes se mantengan seguros. La implementación de autenticación sigue los siguientes pasos clave:
- Registro de Usuarios: Los usuarios pueden registrarse proporcionando su información básica, como correo electrónico y contraseña. Las contraseñas se almacenan de forma segura mediante hashing y nunca se guardan en texto claro, protegiendo así la privacidad de los usuarios.
- Inicio de Sesión Seguro: El proceso de inicio de sesión verifica las credenciales ingresadas por el usuario. Las contraseñas proporcionadas se comparan con los valores hash almacenados en la base de datos, permitiendo el acceso solo si coinciden.
- Protección de Contraseñas: Las contraseñas se gestionan de manera segura en Amazon RDS utilizando técnicas de hashing y salting, lo que añade una capa de seguridad adicional y evita que se almacenen en texto plano.
- Tokens de Autenticación: Al iniciar sesión, el sistema genera un token de autenticación que permite a los usuarios realizar acciones autorizadas sin tener que ingresar sus credenciales repetidamente. Este token tiene un tiempo de expiración para mayor seguridad.
- Control de Sesiones y Expiración de Tokens: Para prevenir accesos no autorizados, los tokens de autenticación tienen un tiempo de expiración. Después de este período, el usuario debe autenticarse nuevamente, lo cual garantiza la protección continua de la cuenta.
- Gestión de Errores y Mensajes de Seguridad: Para prevenir intentos de acceso indebidos, los mensajes de error en el proceso de autenticación son limitados. Esto minimiza el riesgo de ataques de fuerza bruta o de enumeración de usuarios.
Gestión de Contenidos
La gestión de contenidos es fundamental para mantener la plataforma actualizada y brindar una experiencia de usuario coherente y atractiva. En este proyecto, la administración de contenidos abarca la organización de productos, categorías y elementos visuales. Las funciones clave de la gestión de contenidos incluyen:
- Administración de Productos: Los productos de la pizzería (pizzas, bebidas, postres, etc.) se gestionan en una base de datos, lo que permite que se puedan añadir, editar o eliminar fácilmente. Cada producto cuenta con detalles específicos, como nombre, descripción, precio y disponibilidad, que se reflejan automáticamente en la interfaz de usuario.
- Organización por Categorías: Los productos se agrupan en categorías (por ejemplo, Pizzas, Bebidas, Postres) para facilitar la navegación y hacer que la experiencia de usuario sea más intuitiva. Esta estructura permite a los clientes encontrar fácilmente lo que buscan.
- Actualización de Imágenes: Las imágenes de productos y banners promocionales están almacenadas en Amazon S3, lo que facilita su actualización sin afectar el rendimiento de la plataforma. Las nuevas imágenes se suben directamente al bucket de S3, asegurando que el contenido visual esté siempre actualizado y accesible.
- Edición de Contenidos en Tiempo Real: Las modificaciones de precios, descripciones o disponibilidad se aplican en tiempo real. Esto permite que cualquier cambio hecho en la base de datos se refleje inmediatamente en la interfaz de usuario, manteniendo la información actualizada.
- Sistema de Promociones y Ofertas Especiales: La plataforma permite añadir promociones y ofertas especiales para destacar ciertos productos o categorías. Estas ofertas se pueden activar o desactivar fácilmente en la base de datos, brindando flexibilidad para adaptar el contenido a las campañas de marketing.
- Sincronización con el Backend: Todos los contenidos están sincronizados con el backend a través de AWS Lambda, lo que asegura que las actualizaciones en la base de datos se apliquen sin problemas en la aplicación. Esto permite una gestión eficaz y sin interrupciones del contenido, asegurando que los usuarios siempre tengan acceso a la información más reciente.